<script>
  // 1. 计算阶乘
  // 题目：实现 factorial(n)，计算 n 的阶乘
  // 示例：factorial(5) → 120 (5×4×3×2×1)
  //   function factorial(n) {
  //     if (n === 1) {
  //       return 1;
  //     }
  // 实际上的公式就等于 n * n-1的阶乘 =》factorial(n-1)
  //     return n * factorial(n - 1);
  //   }
  //   console.log(factorial(5));

  //   2. 斐波那契数列
  // 题目：实现 fibonacci(n)，返回第 n 个斐波那契数 f(3) = f(2) + f(1)
  // 示例：fibonacci(6) → 8 (序列：1, 1, 2, 3, 5, 8, 13...)

  //   function fibonacci(n) {
  //     // 你的代码
  //     if (n === 1 || n === 2) {
  //       return 1;
  //     }
  //     return fibonacci(n - 1) + fibonacci(n - 2);
  //   }

  //   console.log(fibonacci(6));

  //   3. 数组求和
  // 题目：实现 sumArray(arr)，递归计算数组所有元素的和
  // 示例：sumArray([1, 2, 3, 4, 5]) → 15
  //   function sumArray(arr) {
  //     if (arr.length === 0) {
  //       return 0;
  //     }
  //     return arr[0] + sumArray(arr.slice(1));
  //   }
  //   console.log(sumArray([1, 2, 3, 4, 5]));
  //   调用 sumArray([1, 2, 3, 4, 5])
  // │
  // ├─ 1 + sumArray([2, 3, 4, 5])
  // │  ├─ 2 + sumArray([3, 4, 5])
  // │  │  ├─ 3 + sumArray([4, 5])
  // │  │  │  ├─ 4 + sumArray([5])
  // │  │  │  │  ├─ 5 + sumArray([])
  // │  │  │  │  │  └─ 0 (基本情况)
  // │  │  │  │  └─ 5 + 0 = 5
  // │  │  │  └─ 4 + 5 = 9
  // │  │  └─ 3 + 9 = 12
  // │  └─ 2 + 12 = 14
  // └─ 1 + 14 = 15 ✅

  // 4. 数组扁平化
  //   / 题目：实现 flatten(arr)，递归展开所有嵌套数组
  // 示例：flatten([1, [2, [3, [4]]], 5]) → [1, 2, 3, 4, 5]
  //   function flatten(arr) {
  //     let result = [];
  //     for (const item of arr) {
  //       if (Array.isArray(item)) {
  //         result = result.concat(flatten(item));
  //       } else {
  //         result.push(item);
  //       }
  //     }
  //     return result;
  //   }
  //   console.log(flatten([1, [2, [3, [4]]], 5]));

  //   5. 深度复制对象
  // 题目：实现 deepClone(obj)，递归深度复制对象（包括嵌套对象和数组）
  // 示例：deepClone({a: 1, b: {c: 2}}) → 新对象

  //   function deepClone(obj) {
  //     if (obj === null || typeof obj !== 'object') return obj;
  //     const result = Array.isArray(obj) ? [] : {};
  //     for (let key in obj) {
  //       result[key] = deepClone(obj[key]);
  //     }
  //     return result;
  //   }
  //   const obj1 = { a: 1, b: { c: 2 } };
  //   const obj2 = deepClone(obj1);
  //   console.log(obj2 === obj1);

  //   6. 计算数组深度
  // 题目：实现 arrayDepth(arr)，返回数组的最大嵌套深度
  // 示例：arrayDepth([1, [2, [3]], 4]) → 3
  //   function arrayDepth(arr) {
  //     if (!Array.isArray(arr)) return 0;
  //     let maxChildDepth = 0;
  //     for (const item of arr) {
  //       if (Array.isArray(item)) {
  //         const childDepth = arrayDepth(item);
  //         // console.log(childDepth);
  //         if (childDepth > maxChildDepth) {
  //           maxChildDepth = childDepth;
  //         }
  //       }
  //       console.log(maxChildDepth);
  //     }
  //     return 1 + maxChildDepth;
  //   }
  //   arrayDepth([1, [3]]);

  //   第1层调用：arrayDepth([1, [3]])
  // │
  // ├─ 处理元素1（数字）
  // │   ├─ 不是数组，跳过递归
  // │   └─ console.log(0) → 输出 0
  // │
  // ├─ 处理元素[3]（数组）
  // │   ├─ 进入第2层调用：arrayDepth([3])
  // │   │   ├─ 处理元素3（数字）
  // │   │   │   ├─ 不是数组，跳过递归
  // │   │   │   └─ console.log(0) → 输出 0
  // │   │   └─ 返回：1 + 0 = 1
  // │   │
  // │   ├─ childDepth = 1
  // │   ├─ maxChildDepth = 1（更新）
  // │   └─ console.log(1) → 输出 1
  // │
  // └─ 返回：1 + 1 = 2
</script>
